home *** CD-ROM | disk | FTP | other *** search
/ HTBasic 9.3 / HTBasic 9.3.iso / 83win / data1.cab / Basic_Plus_Examples / SLOTS < prev    next >
Text File  |  2001-03-02  |  6KB  |  153 lines

  1. 10    ! ************************************************************************
  2. 20    ! Example: Slot Machine
  3. 30    !
  4. 40    ! This example program simulates a slot machine.
  5. 50    ! It illustrates the use of STRING widgets with different fonts, and
  6. 60    ! shows how attribute arrays can be used. The PUSHBUTTON object is used
  7. 70    ! to initiate an action. The PRINTER widget is used to display information
  8. 80    ! to the user.
  9. 90    !
  10. 100   ! The arrays Attr_n$ and Attr are used to program six numeric attributes
  11. 110   ! at once.  The arrays Attr_s$ and Attr_sv$ are used to program two string
  12. 120   ! attributes.
  13. 130   !
  14. 140   ! ************************************************************************
  15. 150   !
  16. 160       DIM Attr_n$(5)[11],Attr_s$(1)[10],Attr(5),Attr_sv$(1)[10],Poss$(6)[6]
  17. 170       Attr_n$(0)="X"
  18. 180       Attr_n$(1)="Y"
  19. 190       Attr_n$(2)="WIDTH"
  20. 200       Attr_n$(3)="HEIGHT"
  21. 210       Attr_n$(4)="RESIZABLE"
  22. 220       Attr_n$(5)="MAXIMIZABLE"
  23. 230       Attr(0)=100              ! x position
  24. 240       Attr(1)=20               ! y position
  25. 250       Attr(2)=120              ! width
  26. 260       Attr(3)=50               ! height
  27. 270       Attr(4)=0                ! resizable
  28. 280       Attr(5)=0                ! maximizable
  29. 290       Attr_s$(0)="FONT"
  30. 300       Attr_s$(1)="TITLE"
  31. 310       Attr_sv$(0)="20 BY 30"
  32. 320       Attr_sv$(1)=""           ! Makes the title area disappear
  33. 330   !
  34. 340       ASSIGN @Slot1 TO WIDGET "STRING"
  35. 350       CONTROL @Slot1;SET (Attr_n$(*):Attr(*),Attr_s$(*):Attr_sv$(*))
  36. 360       CONTROL @Slot1;SET ("BACKGROUND":1,"PEN":2)
  37. 370   !
  38. 380   ! Position the second STRING widget to the right of the first
  39. 390   !
  40. 400       Attr(0)=Attr(0)+Attr(2)
  41. 410       ASSIGN @Slot2 TO WIDGET "STRING"
  42. 420       CONTROL @Slot2;SET (Attr_n$(*):Attr(*),Attr_s$(*):Attr_sv$(*))
  43. 430       CONTROL @Slot2;SET ("BACKGROUND":1,"PEN":2)
  44. 440   !
  45. 450   ! Position the third STRING widget to the right of the second
  46. 460   !
  47. 470       Attr(0)=Attr(0)+Attr(2)
  48. 480       ASSIGN @Slot3 TO WIDGET "STRING"
  49. 490       CONTROL @Slot3;SET (Attr_n$(*):Attr(*),Attr_s$(*):Attr_sv$(*))
  50. 500       CONTROL @Slot3;SET ("BACKGROUND":1,"PEN":2)
  51. 510   !
  52. 520   ! Create a button to quit the game
  53. 530   !
  54. 540       ASSIGN @Quit TO WIDGET "PUSHBUTTON"
  55. 550       CONTROL @Quit;SET ("X":150,"Y":100,"RESIZABLE":0,"MAXIMIZABLE":0)
  56. 560       CONTROL @Quit;SET ("TITLE":"","FONT":"20 BY 30","LABEL":" QUIT ")
  57. 570       ON EVENT @Quit,"ACTIVATED" GOTO Finis
  58. 580   !
  59. 590   ! Create a button to simulate pulling the lever
  60. 600   !
  61. 610       ASSIGN @Pull TO WIDGET "PUSHBUTTON"
  62. 620       CONTROL @Pull;SET ("X":300,"Y":100,"RESIZABLE":0,"MAXIMIZABLE":0)
  63. 630       CONTROL @Pull;SET ("TITLE":"","FONT":"20 BY 30","LABEL":" PULL ")
  64. 640   !
  65. 650   ! The value remaining in the bankroll is displayed in another string
  66. 660   ! widget which retains its title area
  67. 670   !
  68. 680       Bankroll=100
  69. 690       ASSIGN @Bank TO WIDGET "STRING"
  70. 700       CONTROL @Bank;SET ("X":300,"Y":175,"MAXIMIZABLE":0)
  71. 710       CONTROL @Bank;SET ("TITLE":" BANKROLL","WIDTH":150)
  72. 720       CONTROL @Bank;SET ("VALUE":"  $"&VAL$(Bankroll))
  73. 730   !
  74. 740   ! Explain the costs and payoffs in a PRINTER widget
  75. 750   !
  76. 760       ASSIGN @Info TO WIDGET "PRINTER"
  77. 770       CONTROL @Info;SET ("X":100,"Y":175,"ROWS":5,"COLUMNS":21)
  78. 780       CONTROL @Info;SET ("RESIZABLE":0,"MAXIMIZABLE":0,"TITLE":" ODDS")
  79. 790       CONTROL @Info;SET ("TEXT":"Each pull costs $5")
  80. 800       CONTROL @Info;SET ("APPEND TEXT":"3 bars     pays $100")
  81. 810       CONTROL @Info;SET ("APPEND TEXT":"Any 2 bars pays $20")
  82. 820       CONTROL @Info;SET ("APPEND TEXT":"Any 2 7s   pays $10")
  83. 830       CONTROL @Info;SET ("APPEND TEXT":"Any pair   pays $5")
  84. 840   !
  85. 850   ! This array contains the possible values on the wheels
  86. 860   !
  87. 870       Poss$(0)=" BAR"
  88. 880       Poss$(1)=" BELL"
  89. 890       Poss$(2)="APPLE"
  90. 900       Poss$(3)="CHERRY"
  91. 910       Poss$(4)=" PLUM"
  92. 920       Poss$(5)="  7"
  93. 930   !
  94. 940   ! When the pull button is clicked, get some new values
  95. 950   !
  96. 960       ON EVENT @Pull,"ACTIVATED",1 GOSUB Pulled
  97. 970   !
  98. 980       LOOP
  99. 990           WAIT FOR EVENT
  100. 1000       END LOOP
  101. 1010  Pulled:!
  102. 1020       Bankroll=Bankroll-5
  103. 1030       CONTROL @Bank;SET ("VALUE":"  $"&VAL$(Bankroll))
  104. 1040       FOR I=1 TO 8+RND*8
  105. 1050           Val1=INT(RND*6)
  106. 1060           CONTROL @Slot1;SET ("VALUE":Poss$(Val1))
  107. 1070           WAIT .05
  108. 1080           Val2=INT(RND*6)
  109. 1090           CONTROL @Slot2;SET ("VALUE":Poss$(Val2))
  110. 1100           WAIT .05
  111. 1110           Val3=INT(RND*6)
  112. 1120           CONTROL @Slot3;SET ("VALUE":Poss$(Val3))
  113. 1130           WAIT .05
  114. 1140       NEXT I
  115. 1150  !
  116. 1160  ! Assume no payoff
  117. 1170  !
  118. 1180       Win=0
  119. 1190  !
  120. 1200  ! Check for a pair
  121. 1210  !
  122. 1220       IF Val1=Val2 OR Val1=Val3 OR Val2=Val3 THEN Win=5
  123. 1230  !
  124. 1240  ! Check for a pair of 7s
  125. 1250  !
  126. 1260       IF (Val1=5 AND (Val1=Val2 OR Val1=Val3)) OR (Val2=5 AND (Val2=Val3)) THEN Win=10
  127. 1270  !
  128. 1280  ! Check for a pair of bars
  129. 1290  !
  130. 1300       IF (Val1=0 AND (Val1=Val2 OR Val1=Val3)) OR (Val2=0 AND (Val2=Val3)) THEN Win=20
  131. 1310  !
  132. 1320  ! Check for three bars
  133. 1330  !
  134. 1340       IF Val1=0 AND Val2=0 AND Val3=0 THEN Win=100
  135. 1350  !
  136. 1360  ! Declare any winnings
  137. 1370  !
  138. 1380       IF Win>0 THEN DIALOG "INFORMATION","You WON $"&VAL$(Win);TIMEOUT 10
  139. 1390       Bankroll=Bankroll+Win
  140. 1400       CONTROL @Bank;SET ("VALUE":"  $"&VAL$(Bankroll))
  141. 1410       IF Bankroll<=0 THEN STOP
  142. 1420       RETURN
  143. 1430  !
  144. 1440  Finis:!
  145. 1450       ASSIGN @Slot1 TO *! Delete STRING widget
  146. 1460       ASSIGN @Slot2 TO *! Delete STRING widget
  147. 1470       ASSIGN @Slot3 TO *! Delete STRING widget
  148. 1480       ASSIGN @Quit TO * ! Delete PUSHBUTTON widget
  149. 1490       ASSIGN @Pull TO * ! Delete PUSHBUTTON widget
  150. 1500       ASSIGN @Bank TO * ! Delete STRING widget
  151. 1510       ASSIGN @Info TO * ! Delete PRINTER widget
  152. 1520       END
  153.